#ifndef KEYBOARD_H
#define KEYBOARD_H

#include<vector>

/*! @brief Store the state a key can have :
 *
 *  Down        :   The user has just pushed the key,       occur one time
 *  Up          :   The user has just released the key,     occur ont time
 *  Pressed     :   The user is still pressing the key,     occur multiple times
 */
enum TKeyState
{
    Down        =   0,
    Up          =   1,
    Pressed     =   2
};

/*! @brief Store the key and their index. The index is used to find the key inside s_Keys   */
enum TKey
{
    a, b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
};

/*! @brief The Keyboard class is a static one, keep track of each input state       */
class Keyboard
{
    public :

    /************************
    /*      Static
    /************************/

        /************************
        /*      Properties
        /************************/

            static std::vector<TKeyState>    s_Keys;   /*!< Store the state of every key on the keyBoard       */

        /************************
        /*      Methods
        /************************/

            /*! @brief The function will tell if the specified key has been "pushed" by the user    */
            static bool IsKeyDown(TKeyState key);

            /*! @brief This function will tell if the specified key is realeased by the user        */
            static bool IsKeyUp(TKeyState key);

            /*! @brief This function will tell if the specified key is Pressed by the user        */
            static bool IsKeyPressed(TKeyState key);

};

#endif
